不想错过我的推送,记得 点击右上角 - 查看公众号 - 设为星标!摘下星星给我⭐️!
经过了紧张的8月,2019年TI杯全国大学生电子设计大赛终于落下了帷幕,最终我们在H题项目上获得国一的成绩,这其中有太多的心酸只有电赛人才懂!
我也即将升入大三,但是想给未来的电赛人留下点东西,于是受达尔闻邀请写下这篇“心酸史”。
(提醒:下拉文末,有精彩预告)
参赛作品简介:
我们做的是电磁炮系统,用MPU6050做反馈,PID控制,俯仰角和航向角,openmv测距,openmv的反馈回来的位置也是PID控制, 为了让靶子在中心位置。(吐槽:我手里的激光测距在比赛前半个月不知道被谁拿走了!!!mmp比赛前两天我还念叨不会测距吧,openmv确实测距会受光照影响很大,但是程序里可以补偿回来,具体怎么补偿,可以直接跳到下面的软件部分了)。赛前练习:由于今年赛题和往年有一些不太一样,我们组开始准备的是控制类题目,所以肯定是做了往年的控制类赛题,比如17年板球控制系统,15年的风力摆系统等。13年的倒立摆没做,但是我和队友分析了倒立摆的原理。也看了很多倒立摆的所谓‘源码’,出于手头元件有限且时间紧所以没做实物,这些常规的练习在之后的比赛中也都派上了用场。赛题正式公布之后:赛题出来时和比赛结束后很多人在喷出题,说今年没有控制题和电源题,是的,惊呆了!但是仔细读题会发现今年的题完全在第一次专家会议里面体现了出来,我记得当时直播说“大部分学生‘软’化,要提升学生全面能力”,别的题我没做不清楚,但是电磁炮这个我觉得还是和控制一样的(具体哪里一样在下面我会给出详细分析),而且非常考验参赛人的机械结构、基本的硬件基础、还有软件能力。
仔细读题后的感受:可能有一些人被题目中的直流稳压电源供电干扰了,一般实验室里的直流稳压电源最多好像也就30多V吧(因为我们的实验室比较贫困。。见识的可能比较少),那么好多人用升压模块来给电压升到100V+。我们采用的是降压整流,220V变160V然后整流桥变直流。瞬间就能给电容充满,然后用F4控制继电器来放电。
还有就是左右摆动的角度能不能和要求一样准,上下摆动的角度能不能打的准,最后就是发挥二,发炮弹的时间。。玩过游戏的都知道,甩狙不能当目标在中间才打出去,毕竟人是有反应时间的,然后开枪也有反应时间~所以看你怎么处理。我的方法是——一开始,我们居然和傻子一样,选取的塑料做炮弹哈哈哈哈哈,后来补了一下知识。。。我们最终选取强磁珠,然后炮管选取的是鱼竿(因为附近有一家渔具店),截取的炮管不要太长,太长摩擦力会影响很大,太短发射的不准,而且我们用的磁炮弹和炮管口径差不多,这样的话也避免了炮弹在炮管里面可能乱撞的情况。炮管13cm长,内径12mm,外径14mm,炮弹11mm。
2.炮管、线圈。
大家应该都是线圈加电容,这里我就不解释原理了,但是在这里线圈的缠绕有一些讲究,不能乱缠,要按照一个方向,我们当时是一圈缠到头再往回缠。大概是350圈左右(这个圈数好像有讲究emm但是我没仔细找)。这个就真的挺重要的,因为炮弹的位置如果合适,才能打出最远的距离!!!!**秘密就是炮弹要放在线圈后面一点点,多了打不出去,少了还是打的近。我们一点点测试的距离。这样的话,炮弹在场中受力时间最长,也就是出口速度最大。其实这部分没必要多说,两个舵机(可以采用步进电机,细分驱动,能控制的很精确。但是我手头只有一个细分驱动,我记得能到0点几的一个角度),因为我这里采用的是6050做反馈,所以舵机控制也是完全没问题的,而且也能控制精确度(我设定的精确度在0.1)openmv放那么高只是方便我们测距,并没有其他的意义。我在比赛期间写的程序真的挺工整的,每个模式对应的PID,每个模式对应的子函数,还有定时器的switch。
按键选择模式,我用的是触摸屏,但是一开始只把它lcd初始化了,触摸在发挥三初始化的哈哈哈哈然后你们就懂了吧。这是主函数,其实就是一些初始化,还有模式的选择,工作都在定时器中断里面做的,如下:
选择模式然后执行。最主要的我都写在了key.c里面了
这真的是比赛时候写的。。。后来也没有改动。。。真不敢相信我当时写的这么清楚哈哈哈(自恋一波)
好了接着说,算法呢,其实就是简单的斜抛运动啦,S=(V*V*sin2x)/g,最终云台是知道的只是角度X,那么就是X=arcsin[S*g/(V*V)]/2,S是设定值或发挥中的测量值,是固定的。那么我呢,将初速度设为一个能更改的变量,因为如果测距测多了或测少了或者现场一些情况和实验室打的不一样了!那么你可以通过改变V,最终改变X,即俯仰角!!我当时给的70(cm/s)还是很准的。模式一:上电就直接给电容充电,然后按键选择mode1,一个给继电器的管脚高低电平变换,发射。ok这里就不放图了。模式二:选择模式设定,然后下面的是发射前角度,上面的是期望角度:
模式三:和模式二大同小异,考的就是你能不能左右动~~
发挥一:
不过是和openmv通信,然后确定红色的中心像素点在像素中心就好了,PID调节,调节好之后再测距并且发送测量距离,然后发送的时候带上自己定的暗号就好,比如0xFF,只要不是像素点能在的范围就好!不过这时候要注意一下openmv和32通信的问题,数据处理稍微有一点麻烦。八位变成32位而且要分辨暗号。发挥二:这个距离是定死的,但是要求在10s之内能扫一圈,所以我定时器5s转半圈,而且在半圈之内调整好俯仰角,基本上第二次看见就发射,然后程序怎么就知道发射呢?举个例子,从左往右0-320是openmv的像素点位置,openmv发送过来位置,当从右往左扫到了,那就在165的位置要开炮!!!,这样才差不多是中心线打出去!!从左往右扫到了,同理,接收到155的位置开炮~最后总结:这道题怎么说呢,确实简单!很多人在自己学校做的都非常棒!但是考验大家的还有自己的东西的实用性,你不能说以后你做一个产品,你自己测试的非常好,别人一用就炸了(举个例子),所以所有的误差都是我们要考虑的东西,那么对于我们来说,测距是不稳定因素,那么好,我去程序里面更改能直接影响它的因素就好了。打远了,速度调大,打近了,速度调小。还有就是继电器,主控板,最好都准备两套。毕竟运输的路上emmm据我所知有很多死在了路上,我还是很幸运的。电磁炮网上也很多现成的,如果大家以后做的话推荐买现成的,毕竟这个东西挺坑的,不过坑的地方我也都在硬件部分说明了,如果我还有没说到的欢迎大家讨论。而源码,我不建议大家直接去找现成的,因为你从别人的源码入手,比自己写要费脑子的多!!自己打好基础,然后有了思路写起来就没那么麻烦了!多动手!千万别嘴上功夫。包括做往年赛题,虽然要参考网上,但是记住,一定要自己想!当然我的源码会在以后更新出来。比赛就是比赛,只是锻炼你的一个阶梯罢了,说明不了什么,自己学到东西才是真的。达尔闻为参加电赛的同学们准备了以下课程:
毕业设计开班啦!达尔闻秋季大事件
达尔闻携全球分销商-得捷电子(Digi-key)带来17讲毕设系列线上课程。
讲师:毕设导师,名校博士/硕士,资深工程师,知乎大神,B站Up主
课程内容:从选题、基础知识补足,毕设题目拆解教学到毕设案例分享。
时间:2019年9月-2019年12月
福利:丰富的毕设资料、项目方案,免费开发板等,立即占座:
方式一,毕业设计-得捷 交流qq群:657307701
方式二,识别下方二维码进微信交流,如群满可添加妮姐微信:459888529